FastAPI এর সঙ্গে PostgreSQL/MySQL/SQLite ব্যবহার

Web Development - ফাস্টএপিআই (FastAPI) - FastAPI এর সঙ্গে Database Integration
244

FastAPI তে PostgreSQL, MySQL, বা SQLite এর মতো ডাটাবেস ব্যবহার করা খুবই সহজ এবং কার্যকর। FastAPI SQLAlchemy এবং Tortoise ORM এর মতো লাইব্রেরির সাথে ইন্টিগ্রেশন সমর্থন করে, যা ডাটাবেসের সাথে সহজে কাজ করার সুযোগ দেয়। এখানে আমরা দেখব কিভাবে FastAPI-র সঙ্গে বিভিন্ন ধরনের ডাটাবেস (PostgreSQL, MySQL, SQLite) ব্যবহার করা যায়।


১. PostgreSQL ব্যবহার FastAPI-তে

Step 1: PostgreSQL সেটআপ

প্রথমে PostgreSQL ডাটাবেস ইনস্টল এবং কনফিগার করুন, এবং ডাটাবেস তৈরি করুন।

sudo apt-get install postgresql postgresql-contrib

ডাটাবেস তৈরি করুন:

sudo -u postgres psql
CREATE DATABASE fastapi_db;
CREATE USER fastapi_user WITH PASSWORD 'yourpassword';
ALTER ROLE fastapi_user SET client_encoding TO 'utf8';
ALTER ROLE fastapi_user SET default_transaction_isolation TO 'read committed';
ALTER ROLE fastapi_user SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE fastapi_db TO fastapi_user;

Step 2: SQLAlchemy এবং Psycopg2 ইনস্টলেশন

pip install sqlalchemy psycopg2
  • sqlalchemy: ডাটাবেস ORM হিসেবে ব্যবহৃত হয়।
  • psycopg2: PostgreSQL এর সাথে সংযোগ স্থাপনের জন্য প্রয়োজনীয় ড্রাইভার।

Step 3: FastAPI অ্যাপ কনফিগারেশন

from fastapi import FastAPI
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

app = FastAPI()

# PostgreSQL ডাটাবেস URL
SQLALCHEMY_DATABASE_URL = "postgresql://fastapi_user:yourpassword@localhost/fastapi_db"

# SQLAlchemy engine এবং session সেটআপ
engine = create_engine(SQLALCHEMY_DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()

# মডেল তৈরি
class Item(Base):
    __tablename__ = "items"
    id = Column(Integer, primary_key=True, index=True)
    name = Column(String, index=True)
    price = Column(Integer)

# ডাটাবেস তৈরি
Base.metadata.create_all(bind=engine)

@app.post("/items/")
def create_item(name: str, price: int):
    db = SessionLocal()
    db_item = Item(name=name, price=price)
    db.add(db_item)
    db.commit()
    db.refresh(db_item)
    db.close()
    return db_item

এখানে:

  • SQLALCHEMY_DATABASE_URL: PostgreSQL ডাটাবেসের URL।
  • SessionLocal: ডাটাবেস সেশন তৈরি করতে ব্যবহৃত।
  • Base: SQLAlchemy মডেলকে বেস ক্লাস হিসাবে ডিফাইন করা হয়েছে।

রিকোয়েস্ট উদাহরণ:

POST /items/

{
  "name": "Laptop",
  "price": 1500
}

রেসপন্স:

{
  "id": 1,
  "name": "Laptop",
  "price": 1500
}

২. MySQL ব্যবহার FastAPI-তে

Step 1: MySQL সেটআপ

প্রথমে MySQL ইনস্টল এবং কনফিগার করুন, এবং ডাটাবেস তৈরি করুন।

sudo apt-get install mysql-server
sudo mysql_secure_installation

ডাটাবেস তৈরি করুন:

mysql -u root -p
CREATE DATABASE fastapi_db;
CREATE USER 'fastapi_user'@'localhost' IDENTIFIED BY 'yourpassword';
GRANT ALL PRIVILEGES ON fastapi_db.* TO 'fastapi_user'@'localhost';
FLUSH PRIVILEGES;

Step 2: SQLAlchemy এবং MySQL-connector ইনস্টলেশন

pip install sqlalchemy mysql-connector-python
  • mysql-connector-python: MySQL ডাটাবেসের সাথে সংযোগ স্থাপনের জন্য ব্যবহৃত ড্রাইভার।

Step 3: FastAPI অ্যাপ কনফিগারেশন

from fastapi import FastAPI
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

app = FastAPI()

# MySQL ডাটাবেস URL
SQLALCHEMY_DATABASE_URL = "mysql+mysqlconnector://fastapi_user:yourpassword@localhost/fastapi_db"

# SQLAlchemy engine এবং session সেটআপ
engine = create_engine(SQLALCHEMY_DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()

# মডেল তৈরি
class Item(Base):
    __tablename__ = "items"
    id = Column(Integer, primary_key=True, index=True)
    name = Column(String, index=True)
    price = Column(Integer)

# ডাটাবেস তৈরি
Base.metadata.create_all(bind=engine)

@app.post("/items/")
def create_item(name: str, price: int):
    db = SessionLocal()
    db_item = Item(name=name, price=price)
    db.add(db_item)
    db.commit()
    db.refresh(db_item)
    db.close()
    return db_item

এখানে, mysql+mysqlconnector MySQL ডাটাবেসের সাথে সংযোগ স্থাপনের জন্য ব্যবহৃত হচ্ছে।

রিকোয়েস্ট উদাহরণ:

POST /items/

{
  "name": "Smartphone",
  "price": 800
}

রেসপন্স:

{
  "id": 1,
  "name": "Smartphone",
  "price": 800
}

৩. SQLite ব্যবহার FastAPI-তে

Step 1: SQLite সেটআপ

SQLite ইনস্টল করার জন্য কোনো আলাদা সেটআপের প্রয়োজন নেই, কারণ এটি একটি ফাইল-ভিত্তিক ডাটাবেস, যা Python-এর সঙ্গে একযোগে আসে।


Step 2: SQLAlchemy এবং SQLite ব্যবহার

from fastapi import FastAPI
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

app = FastAPI()

# SQLite ডাটাবেস URL
SQLALCHEMY_DATABASE_URL = "sqlite:///./test.db"  # `./test.db` ফাইল ব্যবহার করা হবে

# SQLAlchemy engine এবং session সেটআপ
engine = create_engine(SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False})
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()

# মডেল তৈরি
class Item(Base):
    __tablename__ = "items"
    id = Column(Integer, primary_key=True, index=True)
    name = Column(String, index=True)
    price = Column(Integer)

# ডাটাবেস তৈরি
Base.metadata.create_all(bind=engine)

@app.post("/items/")
def create_item(name: str, price: int):
    db = SessionLocal()
    db_item = Item(name=name, price=price)
    db.add(db_item)
    db.commit()
    db.refresh(db_item)
    db.close()
    return db_item

এখানে, sqlite:///./test.db ব্যবহার করে একটি SQLite ডাটাবেস তৈরি করা হয়েছে। এটি ফাইল-ভিত্তিক ডাটাবেস, তাই কোনো সার্ভার সেটআপের প্রয়োজন নেই।

রিকোয়েস্ট উদাহরণ:

POST /items/

{
  "name": "Tablet",
  "price": 600
}

রেসপন্স:

{
  "id": 1,
  "name": "Tablet",
  "price": 600
}

FastAPI তে PostgreSQL, MySQL, এবং SQLite ডাটাবেস ব্যবহারের মাধ্যমে আপনি স্কেলেবল এবং শক্তিশালী API তৈরি করতে পারেন। SQLAlchemy ব্যবহার করে ডাটাবেস মডেল, সংযোগ এবং সেশন পরিচালনা করা সহজ হয়। FastAPI এর সাথে এই ডাটাবেস ইন্টিগ্রেশন অ্যাসিঙ্ক্রোনাস অপারেশন এবং দ্রুত পারফরম্যান্স নিশ্চিত করতে সাহায্য করে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...